package net.xxcxcxcx.xc_enhancedmob.render.boss_bar.complete;

import net.minecraft.entity.mob.MobEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.text.Text;
import net.xxcxcxcx.xc_enhancedmob.packet.dirty.DataTracking;
import net.xxcxcxcx.xc_enhancedmob.render.boss_bar.column.CustomBossBarColumn;
import net.xxcxcxcx.xc_enhancedmob.render.boss_bar.unit.CustomBossBar;
import org.jetbrains.annotations.Nullable;

import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;

public interface CustomBossBarComplete {
    void writeDrityCustomDataToNbt(NbtCompound nbt);

    void readDrityCustomDataFromNbt(NbtCompound nbt);

    void writeCustomDataToNbt(NbtCompound nbt);

    void readCustomDataFromNbt(NbtCompound nbt);

    void tick(MobEntity mobEntity);

    @Nullable CustomBossBar getBossBar(Text name);

    @Nullable CustomBossBar getBossBar(UUID uuid);

    void addBossColumn(CustomBossBarColumn customBossBarColumn);

    @Nullable CustomBossBarColumn getBossColumn(Text name);

    @Nullable CustomBossBarColumn getBossColumn(UUID uuid);

    CopyOnWriteArrayList<CustomBossBarColumn> getBossColumn();

    void setBossColumns(CopyOnWriteArrayList<CustomBossBarColumn> bossBars);

    boolean getDrity();

    void setDrity(boolean drity);

    DataTracking<Text> getName();

    void setName(Text name);

    DataTracking<Boolean> getShowname();

    void setShowname(boolean showname);

    DataTracking<Integer> getSortCount();

    void setSortCount(int count);
}
